package com.ruoyi.article.service.impl;

import java.util.Date;
import java.util.List;
import java.util.Optional;

import com.ruoyi.article.domain.Article;
import com.ruoyi.article.domain.ArticleDetail;
import com.ruoyi.article.mapper.ArticleDetailMapper;
import com.ruoyi.article.mapper.ArticleMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.article.mapper.TempAticleMapper;
import com.ruoyi.article.domain.TempAticle;
import com.ruoyi.article.service.ITempAticleService;
import org.springframework.transaction.annotation.Transactional;

/**
 * 通过爬虫爬来的数据Service业务层处理
 * 
 * @author ruoyi
 * @date 2022-02-11
 */
@Service
public class TempAticleServiceImpl implements ITempAticleService 
{
    @Autowired
    private TempAticleMapper tempAticleMapper;

    @Autowired
    private ArticleMapper articleMapper;

    @Autowired
    private ArticleDetailMapper articleDetailMapper;

    /**
     * 查询通过爬虫爬来的数据
     * 
     * @param id 通过爬虫爬来的数据主键
     * @return 通过爬虫爬来的数据
     */
    @Override
    public TempAticle selectTempAticleById(Long id)
    {
        return tempAticleMapper.selectTempAticleById(id);
    }

    /**
     * 查询通过爬虫爬来的数据列表
     * 
     * @param tempAticle 通过爬虫爬来的数据
     * @return 通过爬虫爬来的数据
     */
    @Override
    public List<TempAticle> selectTempAticleList(TempAticle tempAticle)
    {
        return tempAticleMapper.selectTempAticleList(tempAticle);
    }

    /**
     * 新增通过爬虫爬来的数据
     * 
     * @param tempAticle 通过爬虫爬来的数据
     * @return 结果
     */
    @Override
    public int insertTempAticle(TempAticle tempAticle)
    {
        return tempAticleMapper.insertTempAticle(tempAticle);
    }

    /**
     * 修改通过爬虫爬来的数据
     * 
     * @param tempAticle 通过爬虫爬来的数据
     * @return 结果
     */
    @Override
    public int updateTempAticle(TempAticle tempAticle)
    {
        return tempAticleMapper.updateTempAticle(tempAticle);
    }

    /**
     * 批量删除通过爬虫爬来的数据
     * 
     * @param ids 需要删除的通过爬虫爬来的数据主键
     * @return 结果
     */
    @Override
    public int deleteTempAticleByIds(Long[] ids)
    {
        return tempAticleMapper.deleteTempAticleByIds(ids);
    }

    /**
     * 删除通过爬虫爬来的数据信息
     * 
     * @param id 通过爬虫爬来的数据主键
     * @return 结果
     */
    @Override
    public int deleteTempAticleById(Long id)
    {
        return tempAticleMapper.deleteTempAticleById(id);
    }

    @Override
    @Transactional
    public int saveToArticle(TempAticle tempAticle) {
        Article article = new Article();
        article.setArticleUser("admin");
        article.setTitle(tempAticle.getTitle());
        String content = tempAticle.getContent();
        String s = Optional.ofNullable(content).map(String::trim).map(str -> str.substring(0, 50)+"...").orElse(null);
        article.setArticleSummary(s);
        article.setCreateBy("admin");
        article.setCreateTime(new Date());
        article.setUpdateBy("admin");
        article.setUpdateTime(new Date());
        article.setCommentCount(0L);
        article.setLikeCount(0L);
        article.setReadCount(0L);
        article.setTopFlag("none");
        article.setEnable(0);
        this.articleMapper.insertArticle(article);
        ArticleDetail articleDetail = new ArticleDetail();
//        articleDetail.setArticleDetailId(article.getArticleId());
        articleDetail.setContentMd(tempAticle.getContent());
        articleDetail.setContentHtml(tempAticle.getHtmlContent());
        articleDetail.setArticleId(article.getArticleId());
        articleDetail.setCreateBy("admin");
        articleDetail.setCreateTime(new Date());
        articleDetail.setUpdateBy("admin");
        articleDetail.setUpdateTime(new Date());
        this.articleDetailMapper.insertArticleDetail(articleDetail);
        this.tempAticleMapper.deleteTempAticleById(tempAticle.getId());
        return 1;
    }
}
